// 仅声明构造类型
/**
 * o new        表示：该类型是可以用new操作符调用。
 * o ...args    表示：构造器可以接受【任意数量】的参数。
 * o any[]      表示：构造器可以接受【任意类型】的参数。 
 * o {}         表示：返回类型是对象（f非null，非undefined的对象）
 */

// 不同写法
type Constructor = new (...args: any[]) => {}

type Constructor1 ={
    new (...args:any[]):{}
    wife:string
}
function test(fn: Constructor) {

}
function test1(fn: Constructor1) {

}

class Person { }
class Person1 { 
    static wife:string
}

test(Person)
test1(Person1)





